.menu {
  $padding-x-default: 0.5em;
  $padding-y-default: 0.5em;
  display: inline-flex;
  flex-direction: column;
  min-width: var(--Menu__min-width, 0);
  max-width: var(--Menu__max-width, 30rem);

  .menu-heading {
    color: var(--color-fg-subtle-2);
    padding: 0 var(--sm3);
    margin-top: var(--sm3);
    font-weight: var(--font-weight-medium);
  }

  .menu-divider {
    border-top: 0.1em solid
      var(--Menu__divider-color, var(--color-border-divider));
    height: 0;
  }

  .menu-item {
    color: var(--color-fg-subtle-1);
    display: flex;
    flex-grow: 1;
    align-items: center;
    background-color: transparent;
    padding: 0 var(--Menu__padding-x, $padding-x-default);
    border-radius: var(--border-radius-m);

    &.menu-item-link,
    &.menu-item-button {
      text-decoration: none;
      cursor: pointer;
    }
    &.menu-item-link:not(.disabled):hover,
    &.menu-item-button:not(.disabled):hover {
      background-color: var(--color-navigation-20-hover);
      color: var(--color-fg-navigation);
    }
    &.menu-item-button {
      border: inherit;
      font-family: inherit;
      font-size: inherit;
      font-weight: inherit;
      text-align: inherit;
    }
    &.danger {
      color: var(--color-fg-danger);

      &:hover {
        background-color: var(--color-bg-danger);
        color: var(--color-fg-danger);
      }
      .icon {
        color: var(--color-fg-danger);
      }
    }

    &.disabled {
      color: var(--color-fg-base-disabled);
      cursor: not-allowed;
      opacity: 0.6;
    }
    > .label {
      flex-grow: 1;
      font-weight: var(--font-weight-medium);
    }
    > .cell:not(:empty) {
      padding: var(--Menu__padding-y, $padding-y-default)
        calc(var(--Menu__padding-x, $padding-x-default) / 2);
    }
    > .control,
    > .icon {
      display: inline-flex;
      align-items: center;
      flex-grow: 0;
      color: var(--icon-fill-color, var(--color-fg-icon));
    }
    > .control {
      --checkbox-margin-bottom: 0;
    }
    &.active {
      background-color: var(--color-navigation-20-active);
      font-weight: var(--font-weight-medium);

      &:hover {
        background-color: var(--color-navigation-20-hover);
        color: var(--color-fg-inverted);
      }
    }
  }

  &.has-icon {
    .menu-item > .icon {
      width: calc(
        var(--Menu__icon-width) + var(--Menu__padding-x, $padding-x-default)
      );
    }
  }
  &.has-control {
    .menu-item > .control {
      width: calc(
        var(--Menu__control-width) + var(--Menu__padding-x, $padding-x-default)
      );
    }
  }
}
